package com.quartet.modules.alarm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.quartet.api.ApiResult;
import com.quartet.api.PageResult;
import com.quartet.modules.alarm.dto.TTerminalRealAlarmInfoResponseDto;
import com.quartet.modules.alarm.entity.TTerminalAlarm;
import com.quartet.modules.platform.dto.TPlatformAlarmResponseDto;
import com.quartet.modules.platform.dto.TPlatformTerminalOnLineRateDto;
import com.quartet.modules.platform.dto.vo.StatisticsAlarmTypeGroupDataVo;
import com.quartet.modules.statistics.dto.AlarmStatisticsRequestDto;
import com.quartet.modules.statistics.dto.AlarmStatisticsResponseDto;
import com.quartet.modules.vehicle.dto.TVehicleRealAlarmInfoRequestDto;

import java.util.List;
import java.util.Map;

/**
 * 报警信息表(TOtherAlarmInfo)表服务接口
 *
 * @author makejava
 * @since 2021-05-18 09:44:34
 */
public interface TTerminalAlarmInfoService extends IService<TTerminalAlarm> {

//    /**
//     * 功能描述: 查询其他报警信息
//     * @author huipanxing huipanxing@chinasofti.com
//     * @date 2021/5/18 10:35
//     * @param tVehicleAlarmInfoRequestDto
//     * @return java.util.List<com.quartet.modules.alarm.dto.TOtherAlarmInfoResponseDto>
//     */
//    List<TOtherAlarmInfoResponseDto> selectOtherAlarmList(TVehicleAlarmInfoRequestDto tVehicleAlarmInfoRequestDto);

    /**
     * 查询历史的其他报警信息
     * @param tVehicleRealAlarmInfoRequestDto
     * @return
     */
    ApiResult<PageResult<TTerminalRealAlarmInfoResponseDto>> selectOtherRealAlarmList(TVehicleRealAlarmInfoRequestDto tVehicleRealAlarmInfoRequestDto);

    /**
     * 获取报警信息
     * @param id
     * @return
     */
    TTerminalRealAlarmInfoResponseDto getAlarmInfoById(Integer id);

    /**
     * 获取未读报警消息
     * @return
     * @param warningMarkList
     */
    List<TTerminalRealAlarmInfoResponseDto> selectTerminalRealAlarmList(List<String> warningMarkList);

    /**
     * 批量修改告警信息状态
     * @param idList
     */
    void updateTerminalAlarmStatus(List<Integer> idList);

    /**
     * 功能描述: 获取过去一周的报警信息
     * @author huipanxing huipanxing@chinasofti.com
     * @date 2021/6/23 17:04
     * @param
     * @return java.util.List<com.quartet.modules.vehicle.dto.TTerminalPositionInfoResponseDto>
     */
    TPlatformAlarmResponseDto getAlarmInfoLastWeek(List<String> tTerminalCodeList);

    /**
     * 查询终端近七日在线率
     * @return
     */
    TPlatformTerminalOnLineRateDto getOnlineRateLastWeek(List<String> tTerminalCodeList);

    /**
     * 报警统计数据
     * @param alarmStatisticsRequestDto
     * @return
     */
    List<AlarmStatisticsResponseDto> queryAlarmStatisticsData(AlarmStatisticsRequestDto alarmStatisticsRequestDto);

//    /**
//     * 分页查询报警统计信息
//     * @param alarmStatisticsRequestDto
//     * @return
//     */
//    PageResult<TTerminalRealAlarmInfoResponseDto> queryAlarmStatisticsList(AlarmStatisticsRequestDto alarmStatisticsRequestDto);

    /**
     * 高度关注按时间分组查询报警统计信息
     * @param alarmStatisticsRequestDto
     * @return
     */
    Map<String, List<AlarmStatisticsResponseDto>> queryAlarmStatisticsFollowData(AlarmStatisticsRequestDto alarmStatisticsRequestDto);

    /**
     * 功能描述: 根据客户和应用类型以及时间区间统计各种报警类型的数量
     * @author huipanxing huipanxing@chinasofti.com
     * @date 2021/11/11 11:28
     * @param alarmStatisticsRequestDto
     * @return java.util.List<com.quartet.modules.statistics.dto.AlarmStatisticsGroupTypeResponseDto>
     */
    StatisticsAlarmTypeGroupDataVo queryAlarmStatisticsGroupType(AlarmStatisticsRequestDto alarmStatisticsRequestDto);

    /**
     * 功能描述: 根据客户和应用类型以及时间区间统计最近3、7、30、自定义时间的报警类型折线图
     * @author huipanxing huipanxing@chinasofti.com
     * @date 2021/11/11 20:20
     * @param alarmStatisticsRequestDto
     * @return java.util.Map<java.lang.String,java.util.List<com.quartet.modules.statistics.dto.AlarmStatisticsResponseDto>>
     */
    Map<String, List<AlarmStatisticsResponseDto>> queryAlarmStatisticsChartGroupTime(AlarmStatisticsRequestDto alarmStatisticsRequestDto);

//    /**
//     * 统计其他报警的信息
//     * @param tVehicleRealAlarmInfoRequestDto
//     * @return
//     */
//    List<TVehicleAlarmInfoStatisticsResponseDto> selectOtherAlarmStatisticsList(TVehicleRealAlarmInfoRequestDto tVehicleRealAlarmInfoRequestDto);
//
//    /**
//     * 功能描述: 查询未处理的报警信息
//     * @author huipanxing huipanxing@chinasofti.com
//     * @date 2021/6/3 11:17
//     * @param tVehicleRealAlarmInfoRequestDto
//     * @return java.util.List<com.quartet.modules.alarm.dto.TVehicleAlarmInfoStatisticsResponseDto>
//     */
//    List<TVehicleSecurityAlarmProcessingResponseDto> selectSecurityAlarmProcessingList(TVehicleRealAlarmInfoRequestDto tVehicleRealAlarmInfoRequestDto);
}